//
//  WelcomeViewController.swift
//  WeiboDemo
//
//  Created by Quentin Zang on 2020/3/16.
//  Copyright © 2020 臧乾坤. All rights reserved.
//

import UIKit

class WelcomeViewController: UIViewController {

    // 设置界面，视图的层次结构
    override func loadView() {
        // 直接使用背景图像作为跟视图，不用关心图像的缩放问题
        view = backImageView
        
        setupUI()
    }
    
    // 视图加载完成之后的后续处理，通常用来设置数据
    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
        iconView.image = UIImage(named: "pets")
    }
    
    // 视图已经显示，通常可以动画/键盘处理
    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        // 动画最好放在这里
        // 1.更改约束 ->  更改位置
        // snap_updateConstraints 更新已经设置过的约束
        /**
            使用自定布局开发原则：
            - 所有使用约束设置位置的控件，不要设置再 frame
            * 原因：自动布局系统会根据设置的约束，自动计算控件的 frame
            * 在layouSubviews 函数中设置 frame
            * 如果程序员主动修改 frame，会引起 自动布局系统计算错误！
            - 工作原理：当有一个运行循环启动，自动布局系统，会收集所有的约束变化
            - 在运行循环结束前，调用 layoutSubviews 函数统一设置 frame
            - 如果希望某些约束提前更新！使用 layoutIfNeeded 函数让自动布局系统，提前收集到约束变化
         */
        iconView.snp.updateConstraints { (make) in
            make.bottom.equalTo(view.snp.bottom).offset(-view.bounds.height + 200)
        }
        
        // 2.动画
        welcomeLabel.alpha = 0 
        UIView.animate(withDuration: 1.2, delay: 0, usingSpringWithDamping: 0.8, initialSpringVelocity: 10, options: [], animations: {
            
            // 自动布局的动画
            self.view.layoutIfNeeded()
            
        }) { (_) in
            UIView.animate(withDuration: 0.8, animations: {
                self.welcomeLabel.alpha = 1
            }) { (_) in
                print("OK")
                // 发送通知
                let noti = NSNotification.Name(rawValue: WBSwitchRootViewControllerNotification)
                NotificationCenter.default.post(name: noti, object: nil)
            }
        }
    }
    

    
    // MARK: - 懒加载
    /// 背景图像
    private lazy var backImageView: UIImageView = UIImageView(imageName: "ad_background")
    
    /// 头像
    private lazy var iconView: UIImageView = {
        let iv = UIImageView(imageName: "avatar_default_big")
        
        // 设置 layer 圆角
        iv.layer.cornerRadius = 45
        iv.layer.masksToBounds = true
        
        return iv
    }()
    
    /// 欢迎标签
    private lazy var welcomeLabel: UILabel = UILabel(title: "欢迎归来", fontSize: 18)

}

// MARK: - 设置界面
extension WelcomeViewController {
    
    private func setupUI() {
        // 1.添加控件
        view.addSubview(iconView)
        view.addSubview(welcomeLabel)
        
        // 2.自动布局
        iconView.snp.makeConstraints { (make) in
            make.centerX.equalTo(view.snp.centerX)
            make.bottom.equalTo(view.snp.bottom).offset(-200)
            make.height.equalTo(90)
            make.width.equalTo(90)
        }
        
        welcomeLabel.snp.makeConstraints { (make) in
            make.centerX.equalTo(iconView.snp.centerX)
            make.top.equalTo(iconView.snp.bottom).offset(16)
        }
        
    }
    
}
